Міністерство освіти та науки України
Національний університет «Львівська політехніка»
Інститут комп’ютерних наук та інформаційних технологій
Кафедра САПР
ЗВІТ
Лабораторна робота №5
з курсу «Архітектура комп’ютерів»
Тема:« ОПЕРАЦІЇ МНОЖЕННЯ ТА ДІЛЕННЯ ЦІЛИХ БЕЗЗНАКОВИХ І ЦІЛИХ ЗНАКОВИХ ЧИСЕЛ В ОДНОКРИСТАЛЬНОМУ МП КР580»
Виконав:
ст. гр. КН-3
Львів
2008
Тема:
ОПЕРАЦІЇ МНОЖЕННЯ ТА ДІЛЕННЯ ЦІЛИХ БЕЗЗНАКОВИХ І ЦІЛИХ ЗНАКОВИХ ЧИСЕЛ В ОДНОКРИСТАЛЬНОМУ МП КР580.
Мета:
Вивчити алгоритми виконання операцій множення та ділення цілих беззнакових і цілих знакових чисел для однокристального мікропроцесора Intel 8080 (КР580ВМ80А), набути практичних навиків складання та налагоджування програм з використанням цих алгоритмів.
Постановка завдання
Виконати операцію ділення над цілими без знаковими числами безпосередньо 23 : 3. Результат записати в SP.
Короткі теоретичні відомості
Набір команд арифметичних операцій чисел для однокристального мікропроцесора Intel 8080 (КР580ВМ80А) не має команди множення або ділення над двома операндами. Тому для реалізації прикладних задач, де необхідно виконати дані арифметичні дії, застосовуються алгоритми що використовують закладений набір команд у МП КР580ВМ80А.
Арифметична операція ділення
Операція ділення обернена по відношенню до операції множення і реалізується подібними циклічними діями. Позначимо через X-ділене, Y-дільник і Z=X/Y - частка, вважаючи їх цілими беззнаковивми числами. При діленні цілих чисел прийнято як додатковий результат формувати ще й залишок R. Для операцій ділення є характерним випадок ділення на нуль (Y=0).
Найпростіший безпосередній спосіб ділення цілих двійкових чисел без знака полягає у відніманні дільника від діленого з накопиченням доки отриманий залишок буде менший дільника (Y>R). Наприклад, 8-бітне ділене знаходиться в регістрі В, 8-бітний дільник у регістрі D регістр H і C очищені, програма формує 8-бітну частку у регістрі C і залишок в регістрі А:
DIV_1: MOV A, D
CPI 0h
JNZ DIV
MVI H, EEh
JMP END
DIV: MOV A,B
CYCLE: SUB D
JC L1
INC C
JMP CYCLE
L1: ADD D
END: HLT
Основний недолік способу безпосереднього діленяя, який робить його непрактичним, полягає в недостатньо високій швидкодії програми.
Блок-схема
SHAPE \* MERGEFORMAT Початок
В,С
h=0; l=0;a=с
С>0
+
-
a=b
a=a-с
A>=0
+
-
h=h+1
a=a+с;l=a
sp=((h)(l))
Кінець
Покрокове виконання алгоритму
1. С>0? Якщо ні, то перехід на п. №7
2. Віднімаємо дільник
3. Залишок додатній? Якщо ні то перехід на п. №6
4. h=h+1
5. Перейти до п. № 2
6. Залишок у акумулятор a=a+c,
7. Вихід
Карта пам’яті
Текст програми
Файл lab5.asm
org 100h
mvi b,23
mvi c,3
lxi h,0h
mov a,c
cpi 0h
jnz div
jmp recon
div: mov a,b
lxi d,200h
cycle: stax d
inr e
sub c
jc l1
inr h
jmp cycle
l1: add c
mov l,a
shld 300h
sphl
recon: nop
hlt
Файл lab5.prn
0100 ORG 100H
0100 0617 MVI B,23; B<-23
0102 0E03 MVI C,3; C<-3
0104 210000 LXI H,0H; h=0,l=0
0107 79 MOV A,C; A<-C
0108 FE00 CPI 0H; перевірка вмістимого акумулятора на 0
010A C21001 JNZ DIV; перехід на DIV, якщо не 0
010D C32401 JMP RECON; перехід на RECON, якщо 0
0110 78 DIV: MOV A,B; A<-B
0111 110002 LXI D,200H; вказуємо на початок розміщення результатів в пам'яті
0114 12 CYCLE: STAX D; вмістиме акумулятора записуємо в пам'ять
0115 1C ...